﻿using System;
using System.Linq;
using System.Web.UI;
using ShoppingCart.Business.Logic;
using ShoppingCart.WebSite.Code;
using SC = ShoppingCart.Business.Entity;

namespace ShoppingCart.WebSite
{
    public partial class SiteMain : BaseMasterPage
    {
        private BasePage PageContent
        {
            get { return ContentPlaceHolder1.Page as BasePage; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            PageContent.UpdateCarrito += PageContentUpdateCarrito;
            ucProducts.UpdateProductos += UCProductsUpdateProductos;

            if (Page.IsPostBack) return;
            LoadCarrito();
            LoadDepartamentos();
        }

        private void PageContentUpdateCarrito(object sender, EventArgs e)
        {
            LoadCarrito();
        }

        private void UCProductsUpdateProductos(object sender, EventArgs e)
        {
            LoadCarrito();
            InvokeUpdateCarrito(EventArgs.Empty);
        }

        protected void DdlDepartamentoSelectedIndexChanged(object sender, EventArgs e)
        {
            IdDepartamento = Convert.ToInt32(ddlDepartamento.SelectedValue);
            Session.Remove("Carrito");
            Response.Redirect("Default.aspx", true);
        }

        protected void BtnBuscarClick(object sender, ImageClickEventArgs e)
        {

        }

        private void LoadCarrito()
        {
            var total = Carrito.Sum(producto => producto.Precio*producto.Cantidad);
            litTotal.Text = total.ToString("C");
            litCantidad.Text = Carrito.Sum(p => p.Cantidad) + " productos";
            upCarrito.Update();
            if (Carrito.Count == 0)
            {
                divMiCarrito.Visible = false;
            }
            else
            {
                divMiCarrito.Visible = true;
                ucProducts.LoadCarrito();
                upProductos.Update();
            }
        }

        private void LoadDepartamentos()
        {
            var departamentos = DepartamentoManager.Instancia.Listar(false);
            BindControl<SC.Departamento>.BindDropDownList(ddlDepartamento, departamentos);
            if (departamentos.Count == 0) return;
            
            if (IdDepartamento != 0) 
                ddlDepartamento.SelectedValue = IdDepartamento.ToString();
            else 
                IdDepartamento = Convert.ToInt32(ddlDepartamento.SelectedValue);
        }
    }
}
